Shell Script 的 unary operator expected 問題

以下面的 if script 為例:

#!/bin/bash

read -p 'please type in "play" : ' INPUT

if [ $INPUT == "play" ];then
     echo "Correct"
else
     echo "Wrong!"
fi


執行後會請我們輸入 “play” 這個單字,不管輸入正確與否都會有提示,但如果輸入的是空白或是直接 enter,則會跳出一行 unary operator expected 的錯誤

please type in "play" :

./test.sh: line 5: [: ==: unary operator expected
Wrong!

這是因為當我們輸入空白時, $INPUT 這個變數的值會是空值 null,而 null 值無法去做比對

要解決這個問題的方法很簡單,只要將 $INPUT 變數用雙引號 " " 包起來就可以了

#!/bin/bash

read -p 'please type in "play" : ' INPUT

if [ "$INPUT" == "play" ];then
     echo "Correct"
else
     echo "Wrong!"
fi
please type in "play" :

Wrong!
wade Written by:

本站站長